package com.ruoyi.user.service;

import java.util.List;

import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.user.mapper.UserCertMapper;
import com.ruoyi.user.domain.UserCert;

/**
 * 实名认证记录Service业务层处理
 *
 * @author ruoyi
 * @date 2024-01-10
 */
@Service
public class UserCertService {
    @Autowired
    private UserCertMapper userCertMapper;

    /**
     * 查询实名认证记录
     *
     * @param certId 实名认证记录主键
     * @return 实名认证记录
     */
    public UserCert selectUserCertByCertId(Long certId) {
        return userCertMapper.selectUserCertByCertId(certId);
    }

    /**
     * 查询实名认证记录列表
     *
     * @param userCert 实名认证记录
     * @return 实名认证记录
     */
    public List<UserCert> selectUserCertList(UserCert userCert) {
        return userCertMapper.selectUserCertList(userCert);
    }

    /**
     * 新增实名认证记录
     *
     * @param userCert 实名认证记录
     * @return 结果
     */
    public int insertUserCert(UserCert userCert) {
        userCert.setCreateTime(DateUtils.getNowDate());
        return userCertMapper.insertUserCert(userCert);
    }

    /**
     * 修改实名认证记录
     *
     * @param userCert 实名认证记录
     * @return 结果
     */
    public int updateUserCert(UserCert userCert) {
        userCert.setUpdateTime(DateUtils.getNowDate());
        return userCertMapper.updateUserCert(userCert);
    }

    /**
     * 批量删除实名认证记录
     *
     * @param certIds 需要删除的实名认证记录主键
     * @return 结果
     */
    public int deleteUserCertByCertIds(Long[] certIds) {
        return userCertMapper.deleteUserCertByCertIds(certIds);
    }

    /**
     * 删除实名认证记录信息
     *
     * @param certId 实名认证记录主键
     * @return 结果
     */
    public int deleteUserCertByCertId(Long certId) {
        return userCertMapper.deleteUserCertByCertId(certId);
    }

    public boolean examine(UserCert userCert){
        UserCert cert = userCertMapper.selectUserCertByCertId(userCert.getCertId());
        if(cert.getStatus() != 0){
            throw new ServiceException("该认证记录已审核");
        }
        if (userCert.getStatus() == -1 && StringUtils.isBlank(userCert.getRemark())) {
            throw new ServiceException("驳回必须填理由");
        }
        cert.setStatus(userCert.getStatus());
        cert.setRemark(userCert.getRemark());
        cert.setExamineTime(DateUtils.getNowDate());
        return updateUserCert(cert) > 0;
    }
}
